/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[][]}
 */
var fourSum = function (nums, target) {
  const sortArr = nums.sort((a, b) => a - b)
  const res = []
  for (let i = 0; i <= sortArr.length - 4; i++) {
    if (sortArr[i] + sortArr[i + 1] + sortArr[i + 2] + sortArr[i + 3] > target) {
      break
    }
    if (i > 0 && sortArr[i] === sortArr[i - 1]) {
      continue
    }

    for (let j = i + 1; j <= sortArr.length - 3; j++) {
      if (sortArr[i] + sortArr[j] + sortArr[j + 1] + sortArr[j + 2] > target) {
        break
      }
      if (j > i + 1 && sortArr[j] === sortArr[j - 1]) {
        continue
      }

      for (let k = j + 1; k <= sortArr.length - 2; k++) {
        if (sortArr[i] + sortArr[j] + sortArr[k] + sortArr[k + 1] > target) {
          break
        }
        if (k > j + 1 && sortArr[k] === sortArr[k - 1]) {
          continue
        }

        for (let l = k + 1; l <= sortArr.length - 1; l++) {
          if (sortArr[i] + sortArr[j] + sortArr[k] + sortArr[l] > target) {
            break
          }
          if (l > k + 1 && sortArr[l] === sortArr[l - 1]) {
            continue
          }

          if (sortArr[i] + sortArr[j] + sortArr[k] + sortArr[l] === target) {
            res.push([sortArr[i], sortArr[j], sortArr[k], sortArr[l]])
            break
          }
        }
      }
    }
  }
  return res
}

console.log(fourSum([0, 0, 0, 0, 0], 0))
